package com.mango.community.util;

import com.mango.community.entity.User;
import org.springframework.stereotype.Component;

/**
 * @Author:  MangoCookieMilk
 * @Date:     2020/7/25 16:32
 *
 * 持有用户的信息，用来代替session对象
 */
@Component
public class HostHolder {

    /** 初始化一个ThreadLocal
     * 原理是以线程为key来进行存取值
     */
    private ThreadLocal<User> users = new ThreadLocal<>();

    /**
     * 将当前的user对象当作key值存入ThreadLocal 中
     * @param user
     */
    public void setUser(User user){
        users.set(user);
    }

    /** 从 ThreadLocal 对象中将 user对象取出来
     * @return
     */
    public User getUser(){
        return users.get();
    }

    /**
     * 使用结束后将 ThreadLocal 对象中的值清理
     * 因为他是存在内存中的，所以需要清理
     */
    public void clear(){
        users.remove();
    }
}
